home *** CD-ROM | disk | FTP | other *** search
/ Game Programming in C++ - Start to Finish / GameProgrammingS.iso / developer_install / CEGUISDK-0.4.1-VC6-STLport.exe / {app} / include / CEGUILua.h < prev    next >
C/C++ Source or Header  |  2005-08-25  |  7KB  |  207 lines

  1. /************************************************************************
  2.     filename: CEGUILua.h
  3.     created:  16/3/2005
  4.     author:   Tomas Lindquist Olsen
  5.     
  6.     purpose:  Defines interface for LuaScriptModule class
  7. *************************************************************************/
  8. /*************************************************************************
  9.     Crazy Eddie's GUI System (http://www.cegui.org.uk)
  10.     Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
  11.  
  12.     This library is free software; you can redistribute it and/or
  13.     modify it under the terms of the GNU Lesser General Public
  14.     License as published by the Free Software Foundation; either
  15.     version 2.1 of the License, or (at your option) any later version.
  16.  
  17.     This library is distributed in the hope that it will be useful,
  18.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  20.     Lesser General Public License for more details.
  21.  
  22.     You should have received a copy of the GNU Lesser General Public
  23.     License along with this library; if not, write to the Free Software
  24.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  25. *************************************************************************/
  26. #ifndef _CEGUILua_h_
  27. #define _CEGUILua_h_
  28.  
  29.  
  30. /*************************************************************************
  31.     Import / Export control macros
  32. *************************************************************************/
  33. #if defined( __WIN32__ ) || defined( _WIN32 )
  34. #   ifdef CEGUILUA_EXPORTS
  35. #       define CEGUILUA_API __declspec(dllexport)
  36. #   else
  37. #       define CEGUILUA_API __declspec(dllimport)
  38. #   endif
  39. #else
  40. #   define CEGUILUA_API
  41. #endif
  42.  
  43.  
  44. // include Lua
  45. extern "C" {
  46. #include "lua.h"
  47. }
  48.  
  49.  
  50. // Start of CEGUI namespace section
  51. namespace CEGUI
  52. {
  53.  
  54. /*!
  55. \brief
  56.     Interface for the LuaScriptModule class
  57. */
  58. class CEGUILUA_API LuaScriptModule : public CEGUI::ScriptModule
  59. {
  60. public:
  61.     /*************************************************************************
  62.         Construction and Destruction
  63.     *************************************************************************/
  64.     /*!
  65.     \brief
  66.         Constructor for LuaScriptModule class which create a lua_State
  67.     */
  68.     LuaScriptModule();
  69.  
  70.  
  71.     /*!
  72.     \brief
  73.         Constructor for LuaScriptModule class which takes a lua_State
  74.  
  75.     \param state
  76.         Pointer to the lua_State that the script module should attach to.
  77.     */
  78.     LuaScriptModule(lua_State* state);
  79.  
  80.  
  81.     /*!
  82.     \brief
  83.         Destructor for LuaScriptModule class.
  84.     */
  85.     ~LuaScriptModule();
  86.  
  87.  
  88.     /*************************************************************************
  89.         Script Execution Functions
  90.     *************************************************************************/
  91.     /*!
  92.     \brief
  93.         Execute a script file.
  94.  
  95.     \param filename
  96.         String object holding the filename of the script file that is to be executed
  97.         
  98.     \param resourceGroup
  99.         Resource group idendifier to be passed to the ResourceProvider when loading the script file.
  100.     */
  101.     void executeScriptFile(const String& filename, const String& resourceGroup);
  102.  
  103.  
  104.     /*!
  105.     \brief
  106.         Execute a scripted global function.  The function should not take any parameters and should return an integer.
  107.  
  108.     \param function_name
  109.         String object holding the name of the function, in the global script environment, that
  110.         is to be executed.
  111.  
  112.     \return
  113.         The integer value returned from the script function.
  114.     */
  115.     int executeScriptGlobal(const String& function_name);
  116.  
  117.  
  118.     /*!
  119.     \brief
  120.         Execute a scripted global 'event handler' function.  The function should take some kind of EventArgs like parameter
  121.         that the concrete implementation of this function can create from the passed EventArgs based object.  The function
  122.         should not return anything.
  123.  
  124.     \param handler_name
  125.         String object holding the name of the scripted handler function.
  126.  
  127.     \param e
  128.         EventArgs based object that should be passed, by any appropriate means, to the scripted function.
  129.  
  130.     \return
  131.         - true if the event was handled.
  132.         - false if the event was not handled.
  133.     */
  134.     bool executeScriptedEventHandler(const String& handler_name, const EventArgs& e);
  135.  
  136.  
  137.     /*!
  138.     \brief
  139.         Execute script code contained in the given CEGUI::String object.
  140.  
  141.     \param str
  142.         String object holding the valid script code that should be executed.
  143.  
  144.     \return
  145.         Nothing.
  146.     */
  147.     void executeString(const String& str);
  148.  
  149.  
  150.     /*************************************************************************
  151.         Bindings creation / destruction
  152.     *************************************************************************/
  153.     /*!
  154.     \brief
  155.         Method called during system initialisation, prior to running any scripts via the ScriptModule, to enable the ScriptModule
  156.         to perform any operations required to complete initialisation or binding of the script language to the gui system objects.
  157.  
  158.     \return
  159.         Nothing.
  160.     */
  161.     void createBindings(void);
  162.  
  163.  
  164.     /*!
  165.     \brief
  166.         Method called during system destruction, after all scripts have been run via the ScriptModule, to enable the ScriptModule
  167.         to perform any operations required to cleanup bindings of the script language to the gui system objects, as set-up in the
  168.         earlier createBindings call.
  169.  
  170.     \return
  171.         Nothing.
  172.     */
  173.     void destroyBindings(void);
  174.  
  175.  
  176.     /*************************************************************************
  177.         Accessor type functions
  178.     *************************************************************************/
  179.     /*!
  180.     \brief
  181.         Method used to get a pointer to the lua_State that the script module is attached to.
  182.  
  183.     \return
  184.         A pointer to the lua_State that the script module is attached to.
  185.     */
  186.     lua_State* getLuaState(void) const    {return d_state;}
  187.  
  188.  
  189. private:
  190.     /*************************************************************************
  191.         Implementation Functions
  192.     *************************************************************************/
  193.     void setModuleIdentifierString();
  194.  
  195.  
  196.     /*************************************************************************
  197.         Implementation Data
  198.     *************************************************************************/
  199.     bool d_ownsState;        //!< true when the attached lua_State was created by this script module
  200.     lua_State* d_state;        //!< The lua_State that this script module uses.
  201.  
  202. };
  203.  
  204. } // namespace CEGUI
  205.  
  206. #endif // end of guard _CEGUILua_h_
  207.